Типичные проблемы¶
Ошибки класса panic¶
Пример ошибки в журнале:
fatal runtime error: failed to initiate panic, error 5
Если возникают ошибки класса panic, то нужно перезапустить экземпляр.
Если ошибки не проходят, то нужно очистить экземпляр и перезапустить его.
Ошибки валидации при вставке и обновлении данных¶
Примеры ошибок в журнале:
# вставка с неправильным типом
value "foo" is not of type: Int32
# вставка поля, которого нет
cant find field foo in fields index
# обновление несуществующего поля
error: cant find field foo in fields index
# обновление на неправильный тип данных
error: value "foo" is not of type: Int32
Ошибки при аварийном переключении мастер-экземпляров Storage¶
Примеры ошибок в журнале:
couldn't apply the request
error at request: ...
can't initialize storage: Duplicate key exists in unique index "pk" in space "attributes" with old tuple - ...
Экземпляры Storage в TCS обычно разбиты по наборам реплик, где в каждом наборе определен свой мастер-экземпляр.
При аварийном переключении мастер-экземпляра может возникнуть ситуация, когда старый мастер-экземпляр становится недоступен, а новый мастер-экземпляр начинает работу, не дождавшись всех записей со старого мастер-экземпляра. Если после такого переключения старый мастер-экземпляр снова подключается к набору реплик, то возникает конфликт записей на новом и старом мастер-экземпляре.
Чтобы спасти старые данные, нужно отложить .xlog-файлы со старого мастер-экземпляра.
Скорее всего хватит последнего .xlog-файла, но для уверенности лучше найти .xlog-файл,
который начинается со значения vclock, меньшего в соответствующих компонентах,
чем последние виденные lsn-значения каждого из двух мастер-экземпляров.
Пример:
После конфликта видим:
на старом мастер-экземпляре:
vclock {1:150, 2:120},на новом мастер-экземпляре:
vclock {1:110, 2:160}.
Тогда нужен xlog-файл со старого мастер-экземпляра, где vclock будет не больше
{1:110, 2:120} (это минимальные lsn-значения по компонентам, которые «видели»
оба мастер-экземпляра вместе).
Дальше такой xlog-файл можно только анализировать вручную (например, через tt cat).
Представляет интерес самый конец этого xlog-файла – то, что потерялось
со старого мастер-экземпляра. То есть записи с id равным 1 и lsn равным с 110 по 150.